# -*- coding:utf-8 -*-
import MeCab

mt_word = MeCab.Tagger('-Owakati')  # `-Owakati` 只做分词
mt = MeCab.Tagger()
text = "山形 新型コロナ 新たに45人感染確認 過去2番目の多さ"
#print(mecab_tagger.parse(text))
'''
ご飯 を 食べ まし た か
------
ご飯    ゴハン  ゴハン  御飯    名詞-普通名詞-一般                      1
を      オ      ヲ      を      助詞-格助詞
食べ    タベ    タベル  食べる  動詞-一般       下一段-バ行     連用形-一般     2
まし    マシ    マス    ます    助動詞  助動詞-マス     連用形-一般
た      タ      タ      た      助動詞  助動詞-タ       終止形-一般
か      カ      カ      か      助詞-終助詞

              <div style="line-height:24px;height:24px;" class="mt10">
                <span id="kana_0" class="trs_jp bold" title="假名">【いちぶ】</span>
                <span class="trs_jp  bold" title="罗马音">【ichibu】</span>
                <span class='tone_jp' title='音调'>②</span>
                <span title="日语发音  bold" class="jpSound"><script type='text/javascript' language='JavaScript'>GetTTSVoice('http://tts.dict.asia/mp3/SPXJ04028.mp3');</script></span>
              </div>
              <div id="jp_com_panel_0" class="jp_explain">
                <span id="comment_0" class="commentItem">
                  <p class="wordtype">【名】</p>（1）一本，一册，一部，一份；一套。（（書物、冊子などの）ひとまとまり。また、一冊。）<br /><p class="liju">　 <img src='/images/icon_star2.gif' align='absmiddle' />新聞一部／一份报纸。<br />　 <img src='/images/icon_star2.gif' align='absmiddle' />書籍一部／一册书。<br />　 <img src='/images/icon_star2.gif' align='absmiddle' />そのプリントを一部ください／把那个讲义给我一部。<br />　 <img src='/images/icon_star2.gif' align='absmiddle' />百科大事典を一部予約する／订购一套大百科词典。</p>（2）一部分（人）。（一部分。ある部分。）<br /><p class="liju">　 <img src='/images/icon_star2.gif' align='absmiddle' />一部の人は反対している／一部分人表示反对。<br />　 <img src='/images/icon_star2.gif' align='absmiddle' />工事は一部を残してほとんど完成した／工程剩下了一部分基本上完成了。</p></span>
              </div>
'''
def getJapanWordList(sentence):
    return mt_word.parse(sentence)#.split()

def getJapanWordFullList(sentence):
    return mt.parse(sentence)

def splitSentence(content):
    return content.split('。')
divide_mark = '-'
divide_mark_n = 25
#添加请求头
HEADERS = {
    'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36 QIHU 360SE'
}
import requests,re

def getTargetList(exp,context):
    p = re.compile(exp)
    return p.findall(context)

def deleteHtmlElements(htmlStr):
    dr = re.compile(r'<[^>]+>',re.S)
    dd = dr.sub('',htmlStr)
    return dd
jiaming_exp = '''<span id="kana_0" class="trs_jp bold" title="假名">(.+?)</span>'''
luomayin_exp = '''<span class="trs_jp  bold" title="罗马音">(.+?)</span>'''
yindiao_exp = '''<span class='tone_jp' title='音调'>(.+?)</span>'''
ciyi_exp = '''<div id="jp_com_panel_0" class="jp_explain">
                <span id="comment_0" class="commentItem">
                  (.+?)
              </div>'''

def getWordMean(word):
    resp = requests.get('https://dict.asia/jc/%s' % word,headers = HEADERS)
    html = resp.text#.replace('\n','').replace('\t','').replace('\r','')
    #print(getTargetList(jiaming_exp, html))
    #print(getTargetList(luomayin_exp, html))
    #print(getTargetList(yindiao_exp, html))
    #print(getTargetList(ciyi_exp, html))
    text = ('{0}{1:<10}{2}').format(divide_mark*5,word,divide_mark*5+'\n')
    text += str(getTargetList(jiaming_exp, html))+'\n'
    text += str(getTargetList(luomayin_exp, html))+'\n'
    text += str(getTargetList(yindiao_exp, html))+'\n'
    text += str(getTargetList(ciyi_exp, html)).replace('<br />','\n')+'\n'
    text = deleteHtmlElements(text)
    return text

def processJapan(content):
    #print(getJapanWordList(text))
    #print('%s %s %s' % ('-'*25,'...','-'*25))
    #print(getJapanWordFullList(text))
    sumNo = 1
    sentenceList = splitSentence(content)
    out_text = ''
    for s in sentenceList:
        if s == '':
            continue
        out_text += '%s %s %s\n' % (divide_mark*divide_mark_n,'sentence '+str(sumNo),divide_mark*divide_mark_n)
        wordList = mt_word.parse(s).split()
        out_text += getJapanWordList(s)+'\n'
        out_text += getJapanWordFullList(s)
        for w in wordList:
            out_text += getWordMean(w)
        sumNo += 1
    return out_text

if __name__ == '__main__':
    #processJapan(text)
    try:
        _source = open('content.txt','r',encoding='utf-8')
        text = _source.read()
        _f = open('result.txt','wb')
        #getWordMean('地域')
        #_f.write(getWordMean('山形').encode('utf-8'))
        _f.write(processJapan(text).encode('utf-8'))
    except Exception as ex:
        print(str(ex))
    finally:
        _f.close()
        _source.close()